
package com.scs.application.modules.upms.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.scs.application.modules.upms.entity.ReportConfig;
import com.scs.application.modules.upms.request.ReportConfigQueryRequest;

import com.scs.application.core.service.IBaseService;

import java.util.List;
import java.util.Map;

/**
 * 报表配置 service 接口
 */
public interface ReportConfigService extends IBaseService<ReportConfig> {

    List<ReportConfig> list(ReportConfigQueryRequest request);


    IPage<ReportConfig> page(ReportConfigQueryRequest request);

    /**
     * 提取报表数据
     *
     * @param id
     * @param params
     */
    Map<String, Object> fetchData(String id, Map<String, Object> params);

    /**
     * 提取报表数据
     * @param id
     * @param forcePaging 是否强制分页，为 {@code false} 时，不管报表如何，都不进行分页
     * @param params
     * @return
     */
    Map<String, Object> fetchData(String id,boolean forcePaging, Map<String, Object> params);


    /**
     * SQL解析
     *
     * @param sql
     * @param datasourceId
     * @param params
     * @return 返回所有的列名
     */
    List<Map<String, Object>> sqlParse(String sql, String datasourceId, Map<String, Object> params);

    /**
     * copy一张报表副本。所有表格字段/图表字段一起copy
     * @param id
     * @return
     */
    ReportConfig copy(String id);
}
